﻿//
//
/////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////
namespace FreeSpaceLibrary
{
    /////////////////////////////////////////////////////////////////////////
    public class Singleton<TSigletonType> where TSigletonType : class, new()
    {
        /////////////////////////////////////////////////////////////////////////
        protected Singleton()
        {
            
        }

        /////////////////////////////////////////////////////////////////////////
        public static TSigletonType Instance
        {
            get { return Creator.Instance; }
        }

        /////////////////////////////////////////////////////////////////////////
        private class Creator
        {
            private static TSigletonType _instance;
            public static TSigletonType  Instance
            {
                get { return _instance ?? (_instance = new TSigletonType()); }
            }
        }
    }


    /////////////////////////////////////////////////////////////////////////
    public enum GameState
    {
        MainMenu = 0,
        Game,
        Exit
    }

    /////////////////////////////////////////////////////////////////////////
    public enum TextureEnum
    {
        BackgroundLevel1 = 0,
        BackgroundLevel2,
        AsteroidSmall1,
        Star,
        SpaceShip,
        Weapon1,
        Enemy1,
        Enemy2,
        Enemy3
    }

    /////////////////////////////////////////////////////////////////////////
    public enum FontEnum
    {
        LoadingCaption = 0,
        MenuTitle,
        MenuItem
    }

    /////////////////////////////////////////////////////////////////////////
    public enum Levels
    {
        Level1 = 0,
        Level2 = 1,
        Level3 = 2,
        Level4 = 3,
        Level5 = 4,
        Level6 = 5
    }

    /////////////////////////////////////////////////////////////////////////
    public enum SubLevels
    {
        SubLevel1 = 0,
        SubLevel2 = 1,
        SubLevel3 = 2,
        SubLevel4 = 3,
        SubLevel5 = 4,
        SubLevel6 = 5
    }

    /////////////////////////////////////////////////////////////////////////
    public enum ObjectType
    {
        AsteroidFields = 0
    }

    /////////////////////////////////////////////////////////////////////////
    public enum TargetType
    {
        Asteroid = 0,
        Anamy1,
        Anamy2
    }

    /////////////////////////////////////////////////////////////////////////
    public enum Level
    {
        Level1 = 0,
        Level2,
        Level3
    }

    /////////////////////////////////////////////////////////////////////////
    public enum Action
    {
        Action1 = 0,
        Action2,
        Action3
    }
/////////////////////////////////////////////////////////////////////////////
}//FreeSpace.Core
